# 55. 跳跃游戏 中等 相关标签 相关企业
# 给你一个非负整数数组nums ，你最初位于数组的第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标，如果可以，返回
# true ；否则，返回false 。
# 示例
#
# 1：输入：nums = [2, 3, 1, 1, 4] 输出：true 解释：可以先跳1步，从下标0到达下标1, 然后再从下标1跳3步到达最后一个下标。示例
# 2：输入：nums = [3, 2, 1, 0, 4] 输出：false解释：无论怎样，总会到达下标为3的位置。但该下标的最大跳跃长度是0 ， 所以永远不可能到达最后一个下标。

class Solution(object):
    def canJump(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        if nums is None or len(nums) <= 1:
            return True

        cur_max_pos = 0
        for index in range(0, len(nums)):
            if cur_max_pos < index:
                return False
            cur_max_pos = max(index + nums[index], cur_max_pos)

        return True
